package db;

import java.sql.*;

public class DBProvider {//封装类

    /**
     * 获取数据库连接
     * @return 数据库连接
     */

    public Connection getConn() {
        //返回值
        Connection connection = null;

        //(0)准备数据库连接的相关参数
        //数据库的驱动类的名字，包，路径名
       String strDriverName4Mysql8 = "com.mysql.cj.jdbc.Driver";
        String strDriverName4Mysql5 = "com.mysql.jdbc.Driver";
       String strDriverName4Oracle = "oracle.jdbc.driver.OracleDriver";

        //数据库服务器的连接串
        //连接串的localhost 127.0.0.1 ip地址，服务器名，表示服务器的访问路径 3306 mysql数据库服务器监听的端口号
       String strURL4Mysql8 = "jdbc:mysql://localhost:3306/tjise2021325?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong&allowPublicKeyRetrieval=true";
        String strURL4Mysql5 = "jdbc:mysql://localhost:3306/tjise2021325?useUnicode=true&characterEncoding=utf8";
       String strURL4Oracle = "jdbc:oracle:thin:@localhost:1521:orcl";

        //登录数据库的用户名和密码
        String strUserName = "root";
        String strUserPsw = "111111";

        try {
            // (1) 加载数据库驱动类；【使用反射】【可以省略】
            //如果jvm中没有数据库驱动类Driver实例对象，会自动根据连接串类型加载数据库驱动类的实例。
            //Class.forName(strDriverName4Mysql8);这一行可以不用写，jvm会自动加载

            //(2) 通过DriverManager类的静态方法获取数据库的连接对象Connection；
            connection = DriverManager.getConnection(strURL4Mysql5, strUserName, strUserPsw);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return connection;
    }


    /**
     * 查询操作
     *
     * @param strSql 查询语句
     * @return 查询结果集
     */

    public ResultSet query(String strSql) {
        //(3) 通过数据库连接对象获取查询器 Statement ；
        ResultSet resultSet = null;

    try {
        Statement statement = getConn().createStatement();
        // (5) 使用查询器执行SQL语句，如果是查询操作，则会返回一个ResultSet结果集；
        resultSet = statement.executeQuery(strSql);
    }catch (SQLException throwables){
        throwables.printStackTrace();
    }
            return resultSet;
        }
}
